import 'package:json_annotation/json_annotation.dart';

import '../popularity/popularity_model.dart';

part 'user.g.dart';

@JsonSerializable()
class User {
  /// 幸运扭蛋机是否展示
  int? luckyFlag;

  /// 最近来访人数
  int? accessCount;

  /// 关注数
  dynamic attentions;

  /// 总来访人数
  int? totalAccessedCnt;

  /// 总足迹
  int? totalFootprints;

  /// 好友数
  int? totalFriendsCnt;

  /// < 多账号新增,设备凭证,用于实现501/504或者其他被动退出登录后也能切换账号登录的功能
  String? deviceCert;
  String? token;
  String? mobile;
  int? userId;

  /// 用户id
  int? id;
  String? imId;
  String? imPassword;
  String? imPsw;
  String? nickname;
  String? userRemark;
  String? headPortraitsUrl;
  String? micFrameUrl;
  String? decorationsHeadFrameUrl;

  ///个人简介
  String? defaultAbout;

  /// 国家
  String? country;

  /// 性别（0：保密；1：男；2：女）
  int? gender;
  String? openId;

  /// 总钻石数
  int? totalCount;

  int? virtualBalance;

  /// 贵族名称
  String? nobleRankName;

  /// 等级
  int? memberLevel;

  /// 粉丝数
  int? fans;

  ///礼物数量
  String? giftNum;

  /// 生日
  String? birth;

  /// 签名
  String? about;

  /// 兴趣爱好
  String? interests;
  List<String>? aboutList;

  /// 我的语音
  String? myVoice;

  /// 语音时长
  int? duration;

  /// 页面图片
  String? pageImgInAudit;

  /// 环信当前登陆的设备id
  String? deviceID_HX;

  /// 环信Token
  String? deviceToken_HX;

  /// 等级图标
  String? memberEmblem;

  /// IM会话页面头像框
  String? memberHeadPortrail;

  /// 1.用户 2.陪玩师
  // Object? type;

  /// 用户编号
  String? userCode;

  /// 不带文字的徽章
  String? emblemSimpleUrl;

  /// yahabibi贵族徽章-带文字
  String? emblemUrl;

  /// yahabibi贵族等级
  int? nobleRankCode;

  /// 隐藏所在地
  bool? showLocation;

  /// 不出现在同城
  bool? sameCity;

  /// 榜单隐身
  bool? showInTops;

  /// 进入聊天室隐身
  bool? showInRoom;

  /// 隐藏在语音房间的状态 (0-否,1-是)
  bool? hideRoomStatus;

  /// 隐藏访问足迹 (0-否,1-是)
  bool? hideAccessLog;

  /// 隐藏在线状态和最近在线时间 (0-否,1-是)
  bool? hideActiveTime;

  /// 隐藏财富等级
  bool? hideWealthLevel;

  /// 隐藏人气等级 (0-否,1-是)
  bool? hidePopularityLevel;

  /// 隐藏财富榜:0-关闭；1-开启
  bool? hideWealthRank;
// 隐藏魅力榜:0-关闭；1-开启
  bool? hideCharmRank;

  /// 隐藏周星榜:0-关闭；1-开启
  bool? hideWeekRank;

  /// 是否显示消息详情及发送人（新消息通知新增字段），由于 0代表不显示，1代表是显示， null也代表显示（默认）
  String? messageDetail;

  /// 是否显示推送
  String? messageReminder;

  /// 抢单
  String? grabMsg;

  /// 语音派单
  String? assignMsg;

  /// 官方公告
  String? proclamationMsg;

  /// 系统通知
  String? noticeMsg;

  /// 订单消息
  String? orderMsg;

  /// 代练订单消息
  String? trainOrderMsg;

  /// 打招呼消息开关
  bool? greetNotice;

  /// 派单设置品类设置信息
  /// @property (strong, nonatomic) NSArray<LCAssignCategorySettingModel *> *productNotifySettings;
  /// 是否是巡管 true为巡管 为null或者false为非巡管
  bool? managerPermit;

  /// 所在市
  String? city;

  /// 达人标识
  String? platformAuthUrl;

  /// 达人认证描述
  String? authDesc;

  /// 1：关注；0：取消关注
  bool? isAttention;

  /// 智齿客户标签
  String? customerTag;

  /// 智齿技能组
  String? skillsGroup;

  /// 智齿技能组字断
  /// @property (strong, nonatomic) NSDictionary *sobotCustomerFields;
  /// 智齿进线模式
  dynamic sobotServiceMode;

  /// 智齿显示用户等级
  String? wealthFieldLevelName;

  /// 是否需要安全验证
  bool? safeVerifyStatus;

  /// 是否在公会
  bool? isInGuild;

  /// 是否加入超豪俱乐部
  bool? isRicher;

  ///< 是否显示派对头条
  bool? hidePartNews;

  /// 用户信息扩展
  String? userExtInfo;

  /// 人气等级
  PopularityModel? popularityInfo;

  /// 财富等级
  PopularityModel? wealthInfo;

  /// 陪玩师、陪伴标签，搜索页面“相关用户”用到
  String? serviceIdentityUrl;

  /// 礼物面板充值福利标签：0-不展示；1-展示
  bool? accumulateFlag;

  /// 动态增加心情需求新增字段
  bool? moodOldUser;

  /// 是否有游戏动态技能
  bool? gameSkill;

  /// 气泡
  String? decorationsChatBubbleUrl;

  /// 聊天文字颜色
  String? decorationsChatBubbleTextColor;

  /// 新用户引导新增
  /// KHNewUserBootModel *userBootDTO;

  /// app内横幅消息通知新增
  ///< 消息横幅总开关：0-否；1-是
  int? bannerMsg;

  ///< 横幅分类-聊天横幅开关：0-否；1-是
  int? bannerIm;

  ///< 横幅分类-派单和抢单横幅开关：0-否；1-是
  int? bannerOrder;

  ///< 横幅分类-房间邀请横幅开关：0-否；1-是
  int? bannerRoomInvite;

  ///< 动态通知开关：0-否；1-是
  int? dynamicNoticeMsg;

  ///< 房间邀请通知开关：0-否；1-是
  int? roomInviteMsg;

  /// 以下字段新添加的
  /// 后台字段返回 类似 "memberLevel": null 客户端先使用 String 接收，确实也不知道具体的类型
  bool? switchLogin;
  String? user;
  int? checkGender;
  int? firstFill;
  int? age;
  String? province;
  String? memberExp;
  String? virtualMemberExp;
  String? nobleBackgroundUrl;
  String? roomNo;
  int? roomMicIndex;
  String? roomIcon;
  int? platformAuth;
  String? name;
  String? username;
  int? status;
  String? imPwd;
  String? areaCode;
  String? createTime;
  String? updateTime;
  String? roleId;
  String? roleName;
  String? adminName;
  String? punishFrameVO;

  bool? cancel;
  bool? newUser;

  User();
  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
  Map<String, dynamic> toJson() => _$UserToJson(this);
}
